import serial
import time

# 串口参数 (根据您的 RTK 接收器进行修改)
port = "/dev/ttyUSB0"
baudrate = 115200
bytesize = serial.EIGHTBITS  # 数据位
parity = serial.PARITY_NONE  # 校验位
stopbits = serial.STOPBITS_ONE  # 停止位
timeout = 1  # 读取超时时间 (秒)

try:
    # 打开串口
    ser = serial.Serial(port, baudrate, bytesize, parity, stopbits, timeout)
    print(f"串口 {port} 已打开")

    # 读取数据
    while True:
        if ser.in_waiting > 0:  # 检查是否有数据可读
            line = ser.readline()  # 读取一行数据
            # line = ser.read(ser.in_waiting) # 或者读取所有可用数据
            try:
                decoded_line = line.decode('utf-8').strip() #尝试解码
                print(decoded_line) # 打印解码后的数据
            except UnicodeDecodeError:
                print(f"解码错误, 原始数据: {line}")
                
            # 在这里对数据进行处理，例如解析 NMEA 语句
        time.sleep(0.1) # 短暂休眠，避免CPU占用过高。

except serial.SerialException as e:
    print(f"串口错误：{e}")
except KeyboardInterrupt:
    print("程序已停止")
finally:
    if ser.is_open:
        ser.close()
        print("串口已关闭")